A software application may have multiple software components or software layers (may also be referred to as software libraries) that communicate or exchange data with each other. For example, code executing in one layer may call functions implemented in another layer, or code executing in one layer may pass parameters to another layer. Because of the modularized nature of such a software application, a security vulnerability may exist where a hacker can extract a software layer from a legitimate device that had originally installed the application, integrate the software layer into a malicious application, and then run the malicious application on another device.
Embodiments of the present invention address these and other problems individually and collectively.